﻿/**********************************************************************
 * @file   GraphDataCalculate.h
 * @brief  渲染数据计算接口
 * @author BaGuijun (baguijun@163.com)
 * @date   2025-02-20
 *********************************************************************/
#ifndef _GraphDataCalculate_H_
#define _GraphDataCalculate_H_

#include "GraphDataProviderAPI.h"

namespace GraphData
{
    /**
     * @brief  渲染数据计算接口
     * @author BaGuijun (baguijun@163.com)
     * @date   2025-02-20
     */
    class GRAPHDATAPROVIDERAPI GraphDataCalculate
    {
    public:
        /**
         * @brief    构造函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-02-20
         */
        GraphDataCalculate() = default;
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-02-20
         */
        ~GraphDataCalculate() = default;
        /**
         * @brief    计算几何线、面中心
         * @param[i] virTopoId                       线、面虚拓扑id
         * @param[i] pos                             中心
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-02-20
         */
        static void calculateOCCGeoCenter(int virTopoId, double* pos);
        /**
         * @brief    根据线起始点、方向、距离计算终点
         * @param[i] startPoint                     起始点[3]
         * @param[i] direction                      方向[3]
         * @param[i] distance                       距离
         * @param[out] distance                       终点[3]
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-02-27
         */
        static void calculateLineEndPoint(double* startPoint, double* direction, double distance, double* endPoint);

    };
}

#endif
